/**
 * 转换函数（输入diagram nodes + 当前转换类型，输出GraphNode格式）
 * @param {*} args
 * @param {*} type
 */
const ConvertToGraphNode = function (args, type = 'templateLoad') {
  const nodes = []
  args.forEach((node, index) => {
    if (type === 'templateLoad') {
      // templateLoad: 从templates转化为图形库可识别的类型
      let templateElement = {
        options: node.options,
        type: node.type
      }
      // node.type === 'template': 当前node属于template类型，将render,template挂到templateElement下
      if (node.type === 'template') {
        templateElement = {...templateElement, ...{render: node.render, template: node.template}}
      }
      // node.type !== 'rectangle': 当前node不属于rectangle类型，将text属性挂到templateElement下
      if (!node.type.includes('rectangle')) {
        templateElement = {...templateElement, ...{text: node.text || ''}}
      }
      nodes.push(templateElement)
    } else if (type === 'attrsChanged') {
      // attrsChanged: 右侧基础属性变更，转换为GraphNode
      let attrsChangedElement = {
        options: node.options
      }
      // node.type === 'template': 当前node属于template类型，将render,template挂到templateElement下
      if (node.addInfo.type === 'template') {
        attrsChangedElement = {...attrsChangedElement, ...{render: node.addInfo.render, template: node.addInfo.template}}
      }
      // node.type !== 'rectangle' && !node.id.includes('group') : 当前node不属于rectangle类型，并且不属于group类型，将text属性挂到templateElement下
      if (!node.id.includes('rectangle') && !node.id.includes('group')) {
        attrsChangedElement = {...attrsChangedElement, ...{text: node.addInfo.text || ''}}
      }
      nodes.push(attrsChangedElement)
    }
  })
  if (type === 'templateLoad') {
    return nodes[0]
  } else if (type === 'saveAll') {
    return nodes
  } else if (type === 'attrsChanged') {
    return nodes[0]
  }
}
export default ConvertToGraphNode
